package cn.cvs.pojo;

import com.alibaba.fastjson.annotation.JSONField;
import org.hibernate.validator.constraints.Length;
import org.springframework.context.annotation.Scope;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 系统用户类
 * @author project.cvs.team
 */
@Scope("prototype")
@Component
public class SysUser implements java.io.Serializable {
    private Integer id; 			//id
    @Length(min = 3,max = 12,message = "账户的长度：3~12 ^&^! ")
    private String account; 		//账号
    //@Pattern(regexp = "") 使用正则表达式校验
    private String password; 		//密码
    @Length(min = 3,max = 8,message = "哈哈哈，错了^%^!")
    private String realName; 		//真实姓名
    private Integer roleId;	    	//角色id
    private String phone;   		//电话
    private String address; 		//地址
    private Integer sex;	 		//性别
    @JSONField(format = "yyyy-MM-dd") //设置后台传前端的数据
    @DateTimeFormat(pattern = "yyyy-MM-dd") //设置前端传后台的数据
    private Date birthday;  		//出生日期
    private Integer createdUserId; 	//创建人id
    @JSONField(format = "yyyy-MM-dd")
    private Date createdTime; 		//创建时间
    private Integer updatedUserId; 	//修改人id
    private Date updatedTime;   	//修改时间

    private Integer age;			//用户年龄

    //扩展属性角色名称
    private String userRoleName;
    //关联属性 扩展一个角色对象
    private SysRole sysRole;
    //证件照属性
    private String idPicPath;
    //工作照
    private String workPicPath;

    public String getWorkPicPath() {
        return workPicPath;
    }

    public void setWorkPicPath(String workPicPath) {
        this.workPicPath = workPicPath;
    }

    public String getIdPicPath() {
        return idPicPath;
    }

    public void setIdPicPath(String idPicPath) {
        this.idPicPath = idPicPath;
    }

    public SysRole getSysRole() {
        return sysRole;
    }

    public void setSysRole(SysRole sysRole) {
        this.sysRole = sysRole;
    }

    public String getUserRoleName() {
        return userRoleName;
    }

    public void setUserRoleName(String userRoleName) {
        this.userRoleName = userRoleName;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    public String getRealName() {
        return realName;
    }
    public void setRealName(String realName) {
        this.realName = realName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getAccount() {
        return account;
    }
    public void setAccount(String account) {
        this.account = account;
    }
    public Integer getRoleId() {
        return roleId;
    }
    public void setRoleId(Integer role) {
        this.roleId = role;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Integer getSex() {
        return sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Integer getCreatedUserId() {
        return createdUserId;
    }
    public void setCreatedUserId(Integer createdUserId) {
        this.createdUserId = createdUserId;
    }
    public Date getCreatedTime() {
        return createdTime;
    }
    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }
    public Integer getUpdatedUserId() {
        return updatedUserId;
    }
    public void setUpdatedUserId(Integer updatedUserId) {
        this.updatedUserId = updatedUserId;
    }
    public Date getUpdatedTime() {
        return updatedTime;
    }
    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getAge() {
		/*long time = System.currentTimeMillis()-birthday.getTime();
		Integer age = Long.valueOf(time/365/24/60/60/1000).IntegerValue();*/
        Date date = new Date();
        Integer age = date.getYear()-birthday.getYear();
        return age;
    }

    @Override
    public String toString() {
        return "SysUser{" +
                "id=" + id +
                ", account='" + account + '\'' +
                ", password='" + password + '\'' +
                ", realName='" + realName + '\'' +
                ", roleId=" + roleId +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                ", sex=" + sex +
                ", birthday=" + birthday +
                ", createdUserId=" + createdUserId +
                ", createdTime=" + createdTime +
                ", updatedUserId=" + updatedUserId +
                ", updatedTime=" + updatedTime +
                ", age=" + age +
                ", userRoleName='" + userRoleName + '\'' +
                ", sysRole=" + sysRole +
                '}';
    }
}

